package ec.linde.modulos.presupuestos;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

import ec.linde.modulos.recursos.Mensaje;
import ec.linde.modulos.recursos.MensajeContext;
import ec.linde.modulos.recursos.ParametrosWeb;
import ec.linde.modulos.recursos.RegistrarAuditoria;
import ec.linde.modulos.seguridades.AccesoSistemaBean;
import ec.linde.modulos.seguridades.EjbAdminSeguridadBean;
import ec.linde.persistencia.entidades.Auditoria;
import ec.linde.persistencia.entidades.ProdCabeceraProforma;
import ec.linde.persistencia.entidades.ProdClientes;

@ManagedBean(name = "crearOfertasBean")
@ViewScoped
public class CrearOfertasBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@EJB
	private EjbAdministrarProformaBean servicioAdministrarProformaBean=null;
	@EJB
	private EjbAdminSeguridadBean servicioAdminSeguridadBean = null;
	
	/*variables*/
	private int idUsuario = 0;
	private String codigoDKP=null;
	private int numeroOferta=0;
	private int codCliente=0;
	private String nombreCiente=null;
	private String direccionCliente=null;
	private Date fechaRegistroOferta;
	private String nombrePresupuestador=null;
	private String tiempoValidezOferta=null;
	private String detalleOferta=null;
	private int codEstadoOferta=0;
	private int codSucursal=-1;
	private String codTipoPresupuesto=null;
	private int codResponsableComercial=-1;
	private String tiempoEjecucion=null;
	private String codTipoOperacion=null;
	private int codBasePresupuestal;
	private String fechaMasHoraActual = null;
	private MensajeContext contextoMensaje = new MensajeContext();
	private MensajeContext contextoUsuario = new MensajeContext();
	private Mensaje mensaje = new Mensaje();
	private ProdCabeceraProforma prodCabeceraProforma = new ProdCabeceraProforma();
	AccesoSistemaBean usuarioLogueado = new AccesoSistemaBean();
	RegistrarAuditoria auditoria = new RegistrarAuditoria();
	private String mostrarPanel = null;

	public CrearOfertasBean() {
		usuarioLogueado = (AccesoSistemaBean) contextoUsuario
				.getFaceContextMensaje("accesoSistemaBean");
		fechaMasHoraActual = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
				.format(new Date());
		fechaRegistroOferta=new Date();
		codigoDKP=null;
		numeroOferta=0;
		codCliente=0;
		nombreCiente=null;
		direccionCliente=null;
		fechaRegistroOferta= new Date();
		nombrePresupuestador=usuarioLogueado.getUsuarioLogueado().getUsuaNombres()+" "+usuarioLogueado.getUsuarioLogueado().getUsuaApellidos();
		tiempoValidezOferta=ParametrosWeb.validez_oferta;
		detalleOferta=null;
		codEstadoOferta=1;
		codSucursal=usuarioLogueado.getUsuarioLogueado().getProdSucursales().getSucuId();
		codTipoPresupuesto=ParametrosWeb.cod_tipo_presupuesto;
		codResponsableComercial=-1;
		tiempoEjecucion=ParametrosWeb.tiempo_ejecucion;
		codTipoOperacion=ParametrosWeb.cod_tipo_operacion;
		codBasePresupuestal=Integer.valueOf(usuarioLogueado.getBase().getBaprId());
		
	}
	
	public String navegarRegistrarOferta(){
		inicializarValores();
		return "proforma";
	}
	public void inicializarValores() {
		prodCabeceraProforma = new ProdCabeceraProforma();
		usuarioLogueado = (AccesoSistemaBean) contextoUsuario
				.getFaceContextMensaje("accesoSistemaBean");
		idUsuario = usuarioLogueado.getUsuarioLogueado().getUsuaId();
		codigoDKP=null;
		numeroOferta=0;
		codCliente=0;
		nombreCiente=null;
		direccionCliente=null;
		fechaRegistroOferta= new Date();
		nombrePresupuestador=usuarioLogueado.getUsuarioLogueado().getUsuaNombres()+" "+usuarioLogueado.getUsuarioLogueado().getUsuaApellidos();
		tiempoValidezOferta=ParametrosWeb.validez_oferta;
		detalleOferta=null;
		codEstadoOferta=1;
		codSucursal=usuarioLogueado.getUsuarioLogueado().getProdSucursales().getSucuId();
		codTipoPresupuesto=ParametrosWeb.cod_tipo_presupuesto;
		codResponsableComercial=-1;
		tiempoEjecucion=ParametrosWeb.tiempo_ejecucion;
		codTipoOperacion=ParametrosWeb.cod_tipo_operacion;
		codBasePresupuestal=Integer.valueOf(usuarioLogueado.getBase().getBaprId());
	}
	public String crearOfertas() {
		RequestContext context = RequestContext.getCurrentInstance();
		boolean loggedIn = false;

		try {

			usuarioLogueado = (AccesoSistemaBean) contextoUsuario
					.getFaceContextMensaje("accesoSistemaBean");
			idUsuario = usuarioLogueado.getUsuarioLogueado().getUsuaId();
			prodCabeceraProforma.setBaprId(codBasePresupuestal);
			prodCabeceraProforma.setCaprCodDkP(codigoDKP);
			prodCabeceraProforma.setCaprFecha(fechaRegistroOferta);
			prodCabeceraProforma.setCaprValidezOferta(tiempoValidezOferta);
			prodCabeceraProforma.setCaprDetalle(detalleOferta);
			prodCabeceraProforma.setCaprTipoPresupuesto(codTipoPresupuesto);
			prodCabeceraProforma.setCaprTiempoEjecucion(tiempoEjecucion);
			prodCabeceraProforma.setCaprTipoOperacion(codTipoOperacion);
			prodCabeceraProforma.setBaprId(codBasePresupuestal);
			 Calendar calendar = Calendar.getInstance();
		     calendar.setTime(fechaRegistroOferta);
		     int anio=calendar.get(Calendar.YEAR);
			prodCabeceraProforma.setCaprAnioOferta(anio);
						
			mensaje=servicioAdministrarProformaBean.crearCabeceraProforma(usuarioLogueado.getUsuarioLogueado(), codEstadoOferta, codResponsableComercial, codCliente, prodCabeceraProforma);
			
			if (mensaje.getIdEntidad() > 0) {
				loggedIn = true;
				//mensaje.setContenidoMensaje(ParametrosWeb.valor_guardado);
				mensaje.setPathImagen(ParametrosWeb.imagen_exito);
				prodCabeceraProforma = new ProdCabeceraProforma();
				mensaje.setAccionATomar("proformamodificatab");// index
				mensaje.setExpirarBean(true);
				mensaje.setBeanAexpirar("crearOfertasBean");
				contextoMensaje.setFaceContextMensaje("dato.mensaje", mensaje);
				Auditoria audi = new Auditoria();
				audi = auditoria.crearAuditoria(1,
						usuarioLogueado.getUsuarioLogueado(),
						mensaje.getIdEntidad(),ParametrosWeb.estado_proforma_abierto_edicion);
				
				servicioAdminSeguridadBean.guardarSuceso(audi);
			} else {
				loggedIn = true;
				mensaje.setContenidoMensaje(ParametrosWeb.valor_no_guardado);
				mensaje.setPathImagen(ParametrosWeb.imagen_error);
				contextoMensaje.setFaceContextMensaje("dato.mensaje", mensaje);
				prodCabeceraProforma = new ProdCabeceraProforma();
			}
			context.addCallbackParam("loggedIn", loggedIn);
		} catch (Exception e) {

			mensaje.setPathImagen(ParametrosWeb.imagen_error);
			mensaje.setContenidoMensaje("Error");
			mensaje.setAccionATomar(null);
			mostrarPanel = ParametrosWeb.panel_mensaje;
			contextoMensaje.setFaceContextMensaje("dato.mensaje", mensaje);
			e.printStackTrace();
		}
		return null;

	}

	public EjbAdministrarProformaBean getServicioAdministrarProformaBean() {
		return servicioAdministrarProformaBean;
	}

	public void setServicioAdministrarProformaBean(
			EjbAdministrarProformaBean servicioAdministrarProformaBean) {
		this.servicioAdministrarProformaBean = servicioAdministrarProformaBean;
	}

	public String getCodigoDKP() {
		return codigoDKP;
	}

	public void setCodigoDKP(String codigoDKP) {
		this.codigoDKP = codigoDKP;
	}

	public int getNumeroOferta() {
		return numeroOferta;
	}

	public void setNumeroOferta(int numeroOferta) {
		this.numeroOferta = numeroOferta;
	}

	public int getCodCliente() {
		return codCliente;
	}

	public void setCodCliente(int codCliente) {
		this.codCliente = codCliente;
	}

	public String getNombreCiente() {
		return nombreCiente;
	}

	public void setNombreCiente(String nombreCiente) {
		this.nombreCiente = nombreCiente;
	}

	public String getDireccionCliente() {
		return direccionCliente;
	}

	public void setDireccionCliente(String direccionCliente) {
		this.direccionCliente = direccionCliente;
	}

	public Date getFechaRegistroOferta() {
		return fechaRegistroOferta;
	}

	public void setFechaRegistroOferta(Date fechaRegistroOferta) {
		this.fechaRegistroOferta = fechaRegistroOferta;
	}

	public String getNombrePresupuestador() {
		return nombrePresupuestador;
	}

	public void setNombrePresupuestador(String nombrePresupuestador) {
		this.nombrePresupuestador = nombrePresupuestador;
	}

	public String getTiempoValidezOferta() {
		return tiempoValidezOferta;
	}

	public void setTiempoValidezOferta(String tiempoValidezOferta) {
		this.tiempoValidezOferta = tiempoValidezOferta;
	}

	public String getDetalleOferta() {
		return detalleOferta;
	}

	public void setDetalleOferta(String detalleOferta) {
		this.detalleOferta = detalleOferta;
	}

	public int getCodEstadoOferta() {
		return codEstadoOferta;
	}

	public void setCodEstadoOferta(int codEstadoOferta) {
		this.codEstadoOferta = codEstadoOferta;
	}

	public int getCodSucursal() {
		return codSucursal;
	}

	public void setCodSucursal(int codSucursal) {
		this.codSucursal = codSucursal;
	}

	public String getCodTipoPresupuesto() {
		return codTipoPresupuesto;
	}

	public void setCodTipoPresupuesto(String codTipoPresupuesto) {
		this.codTipoPresupuesto = codTipoPresupuesto;
	}

	public int getCodResponsableComercial() {
		return codResponsableComercial;
	}

	public void setCodResponsableComercial(int codResponsableComercial) {
		this.codResponsableComercial = codResponsableComercial;
	}

	public String getTiempoEjecucion() {
		return tiempoEjecucion;
	}

	public void setTiempoEjecucion(String tiempoEjecucion) {
		this.tiempoEjecucion = tiempoEjecucion;
	}

	public String getCodTipoOperacion() {
		return codTipoOperacion;
	}

	public void setCodTipoOperacion(String codTipoOperacion) {
		this.codTipoOperacion = codTipoOperacion;
	}

	public int getCodBasePresupuestal() {
		return codBasePresupuestal;
	}

	public void setCodBasePresupuestal(int codBasePresupuestal) {
		this.codBasePresupuestal = codBasePresupuestal;
	}

	public String getFechaMasHoraActual() {
		return fechaMasHoraActual;
	}

	public void setFechaMasHoraActual(String fechaMasHoraActual) {
		this.fechaMasHoraActual = fechaMasHoraActual;
	}

	public MensajeContext getContextoUsuario() {
		return contextoUsuario;
	}

	public void setContextoUsuario(MensajeContext contextoUsuario) {
		this.contextoUsuario = contextoUsuario;
	}

	public Mensaje getMensaje() {
		return mensaje;
	}

	public void setMensaje(Mensaje mensaje) {
		this.mensaje = mensaje;
	}

	public AccesoSistemaBean getUsuarioLogueado() {
		return usuarioLogueado;
	}

	public void setUsuarioLogueado(AccesoSistemaBean usuarioLogueado) {
		this.usuarioLogueado = usuarioLogueado;
	}

	public int getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public ProdCabeceraProforma getProdCabeceraProforma() {
		return prodCabeceraProforma;
	}

	public void setProdCabeceraProforma(ProdCabeceraProforma prodCabeceraProforma) {
		this.prodCabeceraProforma = prodCabeceraProforma;
	}

	public String getMostrarPanel() {
		return mostrarPanel;
	}

	public void setMostrarPanel(String mostrarPanel) {
		this.mostrarPanel = mostrarPanel;
	}
	public void cargaDatosEmpresa() {
		try {
			ProdClientes cliente=new ProdClientes();
			cliente=servicioAdministrarProformaBean.consultarClientePorCodigo(codCliente);
			direccionCliente=cliente.getClieDireccionPrincipal();
			getDireccionCliente();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
}
